package com.jzo2o.foundations.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.api.foundations.dto.response.ServeAggregationResDTO;
import com.jzo2o.foundations.model.domain.Serve;
import com.jzo2o.foundations.model.domain.ServeSearch;
import com.jzo2o.foundations.model.dto.request.ServePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
import com.jzo2o.foundations.model.dto.response.ServeResDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author: liZhiJun
 * @CreateTime: 2025-09-24
 * @Description: 区域服务
 * @Version: 1.0
 */
public interface IRegionServeService extends IService<Serve> {
    /**
     * 服务分页查询
     *
     * @param servePageQueryReqDTO
     * @return
     */
    Page<ServeResDTO> page(ServePageQueryReqDTO servePageQueryReqDTO);

    /**
     * 服务批量新增
     *
     * @param serveUpsertReqDTOS
     */
    void batchSava(List<ServeUpsertReqDTO> serveUpsertReqDTOS);

    /**
     * 修改价格
     *
     * @param id
     * @param price
     */
    void updatePrice(Long id, BigDecimal price);

    /**
     * 上架
     *
     * @param id
     */
    void onSale(Long id);

    /**
     * 下架
     *
     * @param id
     */

    void offSale(Long id);

    /**
     * 设置热门
     *
     * @param id
     */
    void onHot(Long id);

    /**
     * 取消热门
     *
     * @param id
     */
    void offHot(Long id);

    /**
     * 首页服务列表
     * 只显示 2个分类  4个项目
     *
     * @param regionId
     * @return
     */
    List<ServeCategoryResDTO> firstPageServeList(Long regionId);

    /**
     * 区域热门服务
     *
     * @param regionId
     * @return
     */
    List<ServeAggregationSimpleResDTO> hotServeList(Long regionId);

    /**
     * 区域服务类型列表
     *
     * @param regionId 区域id
     * @return 区域服务类型列表
     */
    List<ServeAggregationTypeSimpleResDTO> serveTypeList(Long regionId);

    /**
     * 服务详情
     *
     * @param id
     * @return
     */
    ServeAggregationSimpleResDTO getServeDetailById(Long id);
    /**
     * 服务详情
     * 订单使用
     * @param id
     * @return
     */
    ServeAggregationResDTO getServeForOrderById(Long id);
}
